<?php
/**
 * FilialClienteForm Registration
 * @author  <your name here>
 */
class FilialClienteForm extends TPage
{
    protected $form; // form
    
    /**
     * Class constructor
     * Creates the page and the registration form
     */
    function __construct()
    {
        parent::__construct();
        
        // creates the form
        $this->form = new TForm('form_FilialCliente');
        $this->form->class = 'tform'; // CSS class
        $this->form->style = 'width: 100%';
        
        // add a table inside form
        $table = new TTable;
        $table-> width = '100%';
        $this->form->add($table);
        
        // add a row for the form title
        $row = $table->addRow();
        $row->class = 'tformtitle'; // CSS class
        $row->addCell( new TLabel('Cadastro de Filial') )->colspan = 4;
        


        // create the form fields
        $id_cliente                     = new TEntry('id_cliente');
        $id_filial_cliente              = new TEntry('id_filial_cliente');
        $razao_social                   = new TEntry('razao_social');
        $tipo_filial                    = new TCombo('tipo_filial');
        $tipo_inscricao                 = new TCombo('tipo_inscricao');
        $num_inscricao                  = new TEntry('num_inscricao');
        $num_cei                        = new TEntry('num_cei');
        $num_insc_estadual              = new TEntry('num_insc_estadual');
        $num_insc_municipal             = new TEntry('num_insc_municipal');
        $num_insc_obra                  = new TEntry('num_insc_obra');
        $num_emp_pfisica                = new TEntry('num_emp_pfisica');
        $cep                            = new TEntry('cep');
        $nome_pais                      = new TEntry('nome_pais');
        $uf                             = new TCombo('uf');
        $nome_cidade                    = new TEntry('nome_cidade');
        $id_bairro                      = new TSeekButton('id_bairro');
        $tipo_endereco                  = new TCombo('tipo_endereco');
        $endereco                       = new TEntry('endereco');
        $num_endereco                   = new TEntry('num_endereco');
        $cpl_endereco                   = new TEntry('cpl_endereco');
        $num_ddd                        = new TEntry('num_ddd');
        $num_ddi                        = new TEntry('num_ddi');
        $telefone                       = new TEntry('telefone');
        $email                          = new TEntry('email');


        // define the sizes
        $id_cliente->setSize(100);
        $id_filial_cliente->setSize(100);
        $id_filial_cliente->setEditable(false);
        $razao_social->setSize(200);
        $tipo_filial->setSize(200);
        $tipo_inscricao->setSize(100);
        $num_inscricao->setSize(200);
        $num_cei->setSize(200);
        $num_insc_estadual->setSize(200);
        $num_insc_municipal->setSize(200);
        $num_insc_obra->setSize(200);
        $num_emp_pfisica->setSize(200);
        $cep->setSize(80);
        $cep->setMask('99.999-999');
        $nome_pais->setSize(200);
        $uf->setSize(170);
        $nome_cidade->setSize(200);
        $id_bairro->setSize(100);
        $tipo_endereco->setSize(200);
        $endereco->setSize(200);
        $num_endereco->setSize(200);
        $cpl_endereco->setSize(200);
        $num_ddd->setSize(100);
        $num_ddd->setMask('999');
        $num_ddi->setSize(100);
        $num_ddi->setMask('999');
        $telefone->setSize(200);
        $telefone->setMask('9999999999');
        $email->setSize(200);               
        
        $tipo_inscricao->addItems(array(1=>'CNPJ', 2=>'CEI', 3=>'CPF'));
        $tipo_filial->addItems(array('M'=>'Matriz','F'=>'Filial','O'=>'Obra','T'=>'Temporária','C'=>'Cooperativa de Trabalho', 'D'=>'Trabalhador Doméstico'));
        $uf->addItems( array(
                        'AL'=>'Alagoas',
                        'AM'=>'Amazonas',
                        'AP'=>'Amapá',
                        'BA'=>'Bahia',
                        'CE'=>'Ceará',
                        'DF'=>'Distrito Federal',
                        'ES'=>'Espírito Santo',
                        'FN'=>'Fernando de Noronha',
                        'GO'=>'Goiás',
                        'MA'=>'Maranhão',
                        'MG'=>'Minas Gerais',
                        'MS'=>'Mato Grosso do Sul',
                        'MT'=>'Mato Grosso',
                        'PA'=>'Pará',
                        'PB'=>'Paraíba',
                        'PE'=>'Pernambuco',
                        'PI'=>'Piauí',
                        'PR'=>'Paraná',
                        'RJ'=>'Rio de Janeiro',
                        'RN'=>'Rio Grande do Norte',
                        'RO'=>'Rondônia',
                        'RR'=>'Roraima',
                        'RS'=>'Rio Grande do Sul',
                        'SC'=>'Santa Catarina',
                        'SE'=>'Sergipe',
                        'SP'=>'São Paulo',
                        'TO'=>'Tocantins',
                        'XX'=>'Estrangeiros'                            
                        ) );
        $tipo_endereco->addItems(array(
                        'AL'=>'Alameda',
                        'A'=>'Área',
                        'AV'=>'Avenida',
                        'CPO'=>'Campo',
                        'CH'=>'Chácara',
                        'COL'=>'Colônia',
                        'CON'=>'Condomínio',
                        'CJ'=>'Conjunto',
                        'DT- Distrito',
                        'ESP'=>'Esplanada',
                        'ETC'=>'Estação',
                        'EST'=>'Estrada',
                        'FAV'=>'Favela',
                        'FAZ'=>'Fazenda',
                        'FRA'=>'Feira',
                        'JD'=>'Jardim',
                        'LD'=>'Ladeira',
                        'LG'=>'Lago',
                        'LGA'=>'Lagoa',
                        'LRG'=>'Largo',
                        'LOT'=>'Loteamento',
                        'MRO'=>'Morro',
                        'NUC'=>'Núcleo',
                        'O'=>'Outros',
                        'PRQ'=>'Parque',
                        'PSA'=>'Passarela',
                        'PAT'=>'Pátio',
                        'PC'=>'Praça',
                        'Q'=>'Quadra',
                        'REC'=>'Recanto',
                        'RES'=>'Residencial',
                        'ROD'=>'Rodovia',
                        'R'=>'Rua',
                        'ST'=>'Setor',
                        'SIT'=>'Sítio',
                        'TV'=>'Travessa',
                        'TR'=>'Trecho',
                        'TRV'=>'Trevo',
                        'VLE'=>'Vale',
                        'VER'=>'Vereda',
                        'V'=>'Via',
                        'VD'=>'Viaduto',
                        'VLA'=>'Viela',
                        'VL'=>'Vila'                                                
                        ));                        

        // validations
        $id_cliente->addValidation('Cliente', new TRequiredValidator);
        $id_filial_cliente->addValidation('ID', new TRequiredValidator);
        $razao_social->addValidation('Razão Social', new TRequiredValidator);
        $tipo_filial->addValidation('Tipo Filial', new TRequiredValidator);
        $tipo_inscricao->addValidation('Tipo Inscrição', new TRequiredValidator);
        $num_inscricao->addValidation('Nº Inscrição', new TRequiredValidator);
        $num_cei->addValidation('Nº CEI', new TRequiredValidator);
        $num_insc_estadual->addValidation('Insc Estadual', new TRequiredValidator);
        $num_insc_municipal->addValidation('Insc Municipal', new TRequiredValidator);
        $num_insc_obra->addValidation('Insc Obra', new TRequiredValidator);
        $num_emp_pfisica->addValidation('Nº Emp Fisica', new TRequiredValidator);
        $cep->addValidation('CEP', new TRequiredValidator);
        $nome_pais->addValidation('Pais', new TRequiredValidator);
        $uf->addValidation('UF', new TRequiredValidator);
        $nome_cidade->addValidation('Cidade', new TRequiredValidator);
        $id_bairro->addValidation('Bairro', new TRequiredValidator);
        $tipo_endereco->addValidation('Tipo Endereço', new TRequiredValidator);
        $endereco->addValidation('Endereço', new TRequiredValidator);
        $num_endereco->addValidation('Número', new TRequiredValidator);        
        $email->addValidation('Email', new TEmailValidator);       

        // add one row for each form field
        $table->addRowSet( new TLabel('ID'), $id_filial_cliente, new TLabel('Razão Social (*)'), $razao_social);
        $table->addRowSet( new TLabel('Cliente (*)'), $id_cliente );
        $table->addRowSet( new TLabel('Tipo Filial (*)'), $tipo_filial, new TLabel('Tipo Inscrição (*)'), $tipo_inscricao );
        $table->addRowSet( new TLabel('Nº Inscrição (*)'), $num_inscricao, new TLabel('Nº CEI (*)'), $num_cei );
        $table->addRowSet( new TLabel('Insc Estadual (*)'), $num_insc_estadual, new TLabel('Insc Municipal (*)'), $num_insc_municipal );
        $table->addRowSet( new TLabel('Insc Obra (*)'), $num_insc_obra, new TLabel('Nº Emp Fisica (*)'), $num_emp_pfisica );
        $table->addRowSet( new TLabel('CEP (*)'), $cep , new TLabel('Pais (*)'), $nome_pais);
        $table->addRowSet( new TLabel('UF (*)'), $uf , new TLabel('Cidade (*)'), $nome_cidade);
        $table->addRowSet( new TLabel('Bairro (*)'), $id_bairro, new TLabel('Tipo Endereço (*)'), $tipo_endereco );
        $table->addRowSet( new TLabel('Endereço (*)'), $endereco, new TLabel('Número (*)'), $num_endereco );

        $table->addRowSet( new TLabel('Complemento:'), $cpl_endereco);
        $table->addRowSet( new TLabel('DDD:'), $num_ddd, new TLabel('DDI:'), $num_ddi );
        $table->addRowSet( new TLabel('Telefone:'), $telefone, new TLabel('Email:'), $email );


        $this->form->setFields(array($id_cliente,$id_filial_cliente,$razao_social,$tipo_filial,$tipo_inscricao,$num_inscricao,$num_cei,$num_insc_estadual,$num_insc_municipal,$num_insc_obra,$num_emp_pfisica,$cep,$nome_pais,$uf,$nome_cidade,$id_bairro,$tipo_endereco,$endereco,$num_endereco,$cpl_endereco,$num_ddd,$num_ddi,$telefone,$email));


        // create the form actions
        $save_button = TButton::create('save', array($this, 'onSave'), _t('Save'), 'ico_save.png');
        $new_button  = TButton::create('new',  array($this, 'onEdit'), _t('New'),  'ico_new.png');
        
        $this->form->addField($save_button);
        $this->form->addField($new_button);
        
        $buttons_box = new THBox;
        $buttons_box->add($save_button);
        $buttons_box->add($new_button);
        
        // add a row for the form action
        $row = $table->addRow();
        $row->class = 'tformaction'; // CSS class
        $row->addCell($buttons_box)->colspan = 4;
        
        TScript::create('setTimeout(function() { $("input[name=\'razao_social\']").focus() }, 500);');
        
        parent::add($this->form);
    }

    /**
     * method onSave()
     * Executed whenever the user clicks at the save button
     */
    function onSave()
    {
        try
        {
            TTransaction::open('permission'); // open a transaction
            
            // get the form data into an active record FilialCliente
            $object = $this->form->getData('FilialCliente');
            $this->form->validate(); // form validation
            $object->store(); // stores the object
            $this->form->setData($object); // keep form data
            TTransaction::close(); // close the transaction
            
            // shows the success message
            new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
        }
        catch (Exception $e) // in case of exception
        {
            new TMessage('error', '<b>Error</b> ' . $e->getMessage()); // shows the exception error message
            $this->form->setData( $this->form->getData() ); // keep form data
            TTransaction::rollback(); // undo all pending operations
        }
    }
    
    /**
     * method onEdit()
     * Executed whenever the user clicks at the edit button da datagrid
     */
    function onEdit($param)
    {
        try
        {
            if (isset($param['key']))
            {
                $key=$param['key'];  // get the parameter $key
                TTransaction::open('permission'); // open a transaction
                $object = new FilialCliente($key); // instantiates the Active Record
                $this->form->setData($object); // fill the form
                TTransaction::close(); // close the transaction
            }
            else
            {
                $this->form->clear();
            }
        }
        catch (Exception $e) // in case of exception
        {
            new TMessage('error', '<b>Error</b> ' . $e->getMessage()); // shows the exception error message
            TTransaction::rollback(); // undo all pending operations
        }
    }
}
